Computer systems become fault tolerant when they are able to diagnose failures and configure around them. In order to facilitate such diagnosis various computer data must be periodically stored such that when a fault does occur, the computer can retrieve the most recent relevant operating data to determine the nature of the fault.
Typically the computer machine cycle address bits, status signals and interrupt information are stored in memory during each machine cycle. Thus, in the invent of a fault, alarm condition, or a data or address error, the computer can retrieve the most recent status of information, e.g., the last 16 cycles of such data. The computer can then, determine the cause of the alarm, reconfigure around it, reconstruct the data present at the time of a fault, and then continue processing that data. Sixteen cycles of data are usually sufficient for determining the nature of a fault. Consequently, only 16 storage locations are required to store the status information since subsequent cycles of information are then written over the oldest data. Thus, the addresses for these 16 locations or words of data are repeated after every 16 cycles as the oldest of the 16 words is rewritten with the newest.
One approach for providing the addresses for such a diagnostic data storing system would be to provide a counter which supplies addresses of the data locations containing the stored data. Diagnostic software could then read back the addresses from the counter to determine the last used address. The software could then calculate the desired physical storage location in order to retrieve the desired data. However this approach requires a significant amount of hardware, complex software and a significant amount of real computer time.